namespace NGIS.Model
{
	public interface IModelRuntime
	{
		string getName();

		void setName(string pName);

		string getVersion();

		void setVersion(string pVersion);

		string getEntry();

		void setEntry(string pEntry);

		string getBaseDirectory();

		void setBaseDirectory(string pDirectory);

		bool addHardwareRequirement(ref HardwareRequirement pRequirement);

		bool addSoftwareRequirement(ref SoftwareRequirement pRequirement);

		bool addModelAssembly(ref ModelAssembly pRequirement);

		bool addSupportiveResource(ref SupportiveResource pRequirement);

		int getHardwareRequirementCount();

		int getSoftwareRequirementCount();

		int getModelAssemblyCount();

		int getSupportiveResourceCount();

		bool getHardwareRequirement(int idx, ref HardwareRequirement pRequirement);

		bool getSoftwareRequirement(int idx, ref SoftwareRequirement pRequirement);

		bool getModelAssembly(int idx, ref ModelAssembly pRequirement);

		bool getSupportiveResource(int idx, ref SupportiveResource pRequirement);

		bool removeHardwareRequirementref(HardwareRequirement pRequirement);

		bool removeSoftwareRequirement(ref SoftwareRequirement pRequirement);

		bool removeModelAssembly(ref ModelAssembly pRequirement);

		bool removeSupportiveResource(ref SupportiveResource pRequirement);

		bool removeHardwareRequirement(int idx);

		bool removeSoftwareRequirement(int idx);

		bool removeModelAssembly(int idx);

		bool removeSupportiveResource(int idx);

		bool compareOther(IModelRuntime pRuntime, ref string obj, ref string name);
	}
}
